from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
import matplotlib

from math import sin
from math import cos
import xlwt
from sklearn.utils import shuffle # 打乱数据



class PLOT_2D(object):
    def __init__(self):
        pass
    
    
    #___________________________________________________________________________________________________________________
    #@ x-y 对照的散点图
    def x_y_san_dian_tu(self):

        #// 1. 中文显示
        plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

        #// 2. 读数据
        path = r"C:\Users\lainiao\Desktop\a.xlsx"   #! 修改项
        data = pd.read_excel(path)
        print(data)
        
        #// 3. 标题、坐标轴
        plt.title("longitude - house price of unit area")                      #! 修改项
        plt.xlabel("longitude")                          #! 修改项
        plt.ylabel("house price of unit area")                          #! 修改项
        
        #// 4. 画图
        plt.plot(data.x6,data.y,'o')             #! 修改项
        plt.grid() # 添加网格
        plt.show()
        
        
    #___________________________________________________________________________________________________________________
    #@ 折线图
    def zhe_xian_tu(self):

        #// 1. 中文显示
        plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

        #// 2. 读数据
        path = r"C:\Users\lainiao\Desktop\a.xlsx"   #! 修改项
        data = pd.read_excel(path)
        print(data)
        
        #// 3. 标题、坐标轴
        str1 = ("属性x1", "属性x2", "属性x3", "属性x4")
        plt.title("标准差对比")                      #! 修改项
        # plt.xlabel("longitude")                          #! 修改项
        plt.ylabel("标准差")                          #! 修改项
        
        
        
        #// 4. 画图
        plt.plot(str1,data.x1,'o-',label='目标函数 Q1')             #! 修改项
        plt.plot(str1,data.x2,'o-',label='目标函数 Q2')             #! 修改项
        plt.legend() # 添加图例
        # plt.grid() # 添加网格
        plt.show()
        

   


#_______________________________________________________________________________________________________________________
    #@ 柱状图
    def zhu_zhuang_tu(self):
        matplotlib.rcParams['font.family'] = 'SimHei'
        path = r"C:\Users\lainiao\Desktop\a.xlsx"
        data = pd.read_excel(path)
        # print(data)
        # 数据
        data = data.T
        # print(data)

        bar_width = 0.5

        str1 = ("房屋年龄", "最近地铁距离", "周围便利店数量", "纬度","经度")
        # str1 = ("属性x1", "属性x2", "属性x3", "属性x4")
        # str1 = ("粒度1", "粒度2", "粒度3", "粒度4")
        # str1 = ("PIRATIO","AGE","RM")
        # str1 = ("加速度", "型号年份", "排量", "重量")
        # str1 = ("气缸数","排量","马力","重量","加速度","型号年份","产地")
        						

        plt.ylabel("粒度值")
        plt.title("目标函数Q3"+'\n'+"十次实验粒度分配结果")
        plt.title("将 属性x4 粒度置为0")
        plt.title("将 属性x3,x4 粒度置为0")
        plt.title("房地产估值数据集实验")
        # plt.title("f=覆盖率/e^特异性"+'\n'+"（遗传算法）")
        # plt.title("f=覆盖率/e^特异性"+'\n'+"（粒子群算法）")
        # plt.title("f=覆盖率*(1/e^(特异性/2))*(-(平衡度-0.9)^2 + 0.81)"+'\n'+"（遗传算法）")
        # plt.title("f=覆盖率*(1/e^(特异性/2))*(-(平衡度-0.9)^2 + 0.81)"+'\n'+"（粒子群算法）")

        # 绘图 x 表示 从那里开始
        # plt.bar(np.arange(5)+bar_width*0, data[0], bar_width)
        # plt.bar(np.arange(5)+bar_width*1, data[1], bar_width)
        # plt.bar(np.arange(5)+bar_width*2, data[2], bar_width)
        # plt.bar(np.arange(5)+bar_width*3, data[3], bar_width)
        # plt.bar(np.arange(5)+bar_width*4, data[4], bar_width,label='粒度值',tick_label=str1)
        # plt.bar(np.arange(5)+bar_width*5, data[5], bar_width)
        # plt.bar(np.arange(5)+bar_width*6, data[6], bar_width)
        # plt.bar(np.arange(5)+bar_width*7, data[7], bar_width)
        # plt.bar(np.arange(5)+bar_width*8, data[8], bar_width)
        # plt.bar(np.arange(5)+bar_width*9, data[9], bar_width)
        plt.bar(np.arange(5)+bar_width*5, data[10], bar_width,label='粒度值',tick_label=str1)


        # plt.legend()

        # 展示图片
        plt.show()


obj = PLOT_2D()
# obj.x_y_san_dian_tu()
# obj.function2()
# obj.zhe_xian_tu()
obj.zhu_zhuang_tu()





#_______________________________________________________________________________________________________________________
# matplotlib.rcParams['font.family'] = 'SimHei'
# path = r"C:\Users\lainiao\Desktop\a.xlsx"
# data = pd.read_excel(path)
# # print(data)
# # 数据
# data = data.T
# # print(data)

# bar_width = 0.05

# str1 = ("粒度1", "粒度2", "粒度3", "粒度4")
# plt.ylabel("粒度值")
# plt.title("f=覆盖率/e^特异性"+'\n'+"（遗传算法）")
# # plt.title("f=覆盖率/e^特异性"+'\n'+"（粒子群算法）")
# # plt.title("f=覆盖率*(1/e^(特异性/2))*(-(平衡度-0.9)^2 + 0.81)"+'\n'+"（遗传算法）")
# # plt.title("f=覆盖率*(1/e^(特异性/2))*(-(平衡度-0.9)^2 + 0.81)"+'\n'+"（粒子群算法）")

# # 绘图 x 表示 从那里开始
# # plt.bar(np.arange(4)+bar_width*0, data[0], bar_width)
# # plt.bar(np.arange(4)+bar_width*1, data[1], bar_width)
# # plt.bar(np.arange(4)+bar_width*2, data[2], bar_width)
# # plt.bar(np.arange(4)+bar_width*3, data[3], bar_width)
# # plt.bar(np.arange(4)+bar_width*4, data[4], bar_width,label='粒度值',tick_label=str1)
# # plt.bar(np.arange(4)+bar_width*5, data[5], bar_width)
# # plt.bar(np.arange(4)+bar_width*6, data[6], bar_width)
# # plt.bar(np.arange(4)+bar_width*7, data[7], bar_width)
# # plt.bar(np.arange(4)+bar_width*8, data[8], bar_width)
# # plt.bar(np.arange(4)+bar_width*9, data[9], bar_width)
# plt.bar(np.arange(4)+bar_width*4, data[0], bar_width,label='粒度值',tick_label=str1)

# # plt.legend()

# # 展示图片
# plt.show()

#_______________________________________________________________________________________________________________________

# data_path_0=r"C:\Users\lainiao\Desktop\主体简易评分——原表.xlsx"
# data_path_1=r"C:\Users\lainiao\Desktop\中央.xls"
# data_path_2=r"C:\Users\lainiao\Desktop\地方.xls"
# data_path_3=r"C:\Users\lainiao\Desktop\白名单.xls"
# data_path_4=r"C:\Users\lainiao\Desktop\白名单对比项.xls"

# data_0=pd.read_excel(data_path_0)
# data_1=pd.read_excel(data_path_1)
# data_2=pd.read_excel(data_path_2)
# data_3=pd.read_excel(data_path_3)
# data_4=pd.read_excel(data_path_4)


''' 测试：粉丝 '''
# plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
# plt.title("粉丝")
# plt.xlabel("媒体机构")
# plt.ylabel("粉丝数")
# plt.plot(data_1.粉丝数,label='中央媒体')
# plt.plot(data_2.粉丝数,label='地方媒体')
# plt.legend() # 添加图例
# plt.grid() # 添加网格
# plt.show()

